import axios from 'axios'
import router from "../router";
import store from "../store";

axios.defaults.baseURL = 'http://localhost:8081'
import Element from "element-ui";
// 创建一个axios实例
const service = axios.create({
    // 请求超时时间
    timeout: 3000
})

// 添加请求拦截器
service.interceptors.request.use(
    config => {
        return config
    },
    err => {
        console.log(err)
    }
)

service.interceptors.response.use(
    response => {
        let res = {}
        res.status = response.status
        res.data = response.data
        console.log("后置拦截")
        // 当结果的code是否为200的情况
        if (res.status === 200) {
            return res
        } else {
            // 弹窗异常信息
            Element.Message({
                message: response.data.msg,
                type: 'error',
                duration: 2 * 1000
            })
            // 直接拒绝往下面返回结果信息
            return Promise.reject(response.data.msg)
        }
    },
    error => {
        console.log('err' + error)// for debug
        if (error.response) {
            if (error.response.data) {
                error.message = error.response.data.message
            }
            // 根据请求状态觉得是否登录或者提示其他
            if (error.response.status === 401) {
                // 清楚token和cookie
                store.commit('clearToken')
                store.commit('clearMenu')
                // 跳转登录页
                router.push({name: 'login'});
                error.message = '请重新登录';
            }
            if (error.response.status === 403) {
                error.message = '权限不足，无法访问';
            }
        }
        Element.Message({
            message: error.message,
            type: 'error',
            duration: 3 * 1000
        })
        return Promise.reject(error)
    })

export default service
